﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Web;

namespace BO
{
    public class FotoBO
    {
        #region Contrutores
        public FotoBO()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        #endregion

        #region Leitores      
        public static Foto Selecionar(int id)
        {
            try
            {
                var bco = new ModeloContainer();
                var obj = bco.Fotoes.FirstOrDefault(f => f.id == id);
                if (obj == null) { throw new Exception("Foto não encontrada!"); }
                return obj;
            }
            catch (Exception ex)
            {
                throw new Exception("Selecionar() - " + ex.Message.ToString());
            }
        }
        public static Foto SelecionarCapa(int noticiaID)
        {
            try
            {
                var bco = new ModeloContainer();
                Foto capa = bco.Fotoes.FirstOrDefault(f => f.noticiaID == noticiaID && f.eCapa == true);

                // Se nao tiver nenhuma eCapa = true, traga a primeira foto que encontrar.
                if (capa == null)
                    capa = bco.Fotoes.FirstOrDefault(f => f.noticiaID == noticiaID);
                if (capa == null)
                {
                    Foto capa2 = new Foto();
                    capa2.urlFoto = "";
                    return capa2;
                }
              
              
                return capa;
            }
            catch (Exception ex)
            {
                throw new Exception("Selecionar() - " + ex.Message.ToString());
            }
        }
        #endregion

        #region Modificadores
        public static Foto Salvar(Foto novoObjeto)
        {
            try
            {
                var bco = new ModeloContainer();
                // Faz o INSERT
                if (novoObjeto.id == 0)
                {
                    bco.Fotoes.AddObject(novoObjeto);
                    bco.SaveChanges();
                }

                // Faz o UPDATE
                else
                {
                    var obj = bco.Fotoes.FirstOrDefault(g => g.id == novoObjeto.id);

                    if (obj != null)
                    {
                        obj.descricao = novoObjeto.descricao;
                        obj.eCapa = novoObjeto.eCapa;
                        obj.urlFoto = novoObjeto.urlFoto;
                        obj.noticiaID = novoObjeto.noticiaID;

                        bco.SaveChanges();

                        return obj;
                    }
                }

                return novoObjeto;    
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString());
            }
        }
        public static void Excluir(int id)
        {
            try
            {
                var bco = new ModeloContainer();
                var obj = bco.Fotoes.FirstOrDefault(x => x.id == id);
                if (obj != null)
                {
                    File.Delete(HttpContext.Current.Server.MapPath("\\fotos\\noticia\\" + obj.noticiaID + "\\" + obj.urlFoto));
                    bco.Fotoes.DeleteObject(obj);
                    bco.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Excluir - " + ex.Message.ToString());
            }
        }
        #endregion
    }
}
